package com.jz.community.basecomm.utils;

import java.text.DecimalFormat;
import java.util.Locale;

/**
 * Created by Target on 2018/4/5.
 * 字符集处理
 */

public class CharacterUtils {


    /**
     * 是否整数、负数
     *
     * @param payAmountPrice
     * @return
     */
    public static boolean isInteger(double payAmountPrice) {
        if (payAmountPrice > 0) {
            return true;
        }

        return false;

    }

    /**
     * 使用java正则表达式去掉多余的.与0
     *
     * @param s
     * @return
     */
    public static String subZeroAndDot(String s) {
        if (s.indexOf(".") > 0) {
            //去掉多余的0
            s = s.replaceAll("0+?$", "");
            //如最后一位是.则去掉
            s = s.replaceAll("[.]$", "");
        }
        return s;
    }

    public static String regularizePrice(float dis) {
        return subZeroAndDot(String.format(Locale.CHINESE, "%.2f", dis));
    }


    /**
     * 将double格式化为指定小数位的String，不足小数位用0补全
     *
     * @param v     需要格式化的数字
     * @param scale 小数点后保留几位
     * @return
     */
    public static String roundByScale(double v, int scale) {
        return stringToDouble(v, scale);
    }

    /**
     * 将double格式化为指定小数位的String，不足小数位用0补全 ，小数点后保留2位
     *
     * @param v 需要格式化的数字
     * @return
     */
    public static String roundByGoodPrice(double v) {
        return stringToDouble(v, 2);
    }


    /**
     * 将double格式化为指定小数位的String，小数点后为0取整，小数点后有小数取小数
     *
     * @param v 需要格式化的数字
     * @return
     */
    public static String roundByScale(double v) {
        DecimalFormat df = new DecimalFormat("###.####");
        return df.format(v);
    }

    /**
     * 将Double 转换字符串，自动补全小数点0
     *
     * @param v
     * @param defScale
     * @return
     */
    private static String stringToDouble(double v, int defScale) {
        if (defScale < 0) {
            throw new IllegalArgumentException(
                    "The   scale   must   be   a   positive   integer   or   zero");
        }
        if (defScale == 0) {
            return new DecimalFormat("0").format(v);
        }
        String formatStr = "0.";
        for (int i = 0; i < defScale; i++) {
            formatStr = formatStr + "0";
        }
        return new DecimalFormat(formatStr).format(v);
    }

}
